﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;

public partial class Painel_Produto : System.Web.UI.Page
{
    ProdutoDAL obj = new ProdutoDAL();
    List<ProdutoDAL> lst = new List<ProdutoDAL>();

    CategoriaDAL oCat = new CategoriaDAL();
    List<CategoriaDAL> lCat = new List<CategoriaDAL>();

    ProdutoCategoriaDAL oProdutoCategoria = new ProdutoCategoriaDAL();
    List<ProdutoCategoriaDAL> lProdutoCategoria = new List<ProdutoCategoriaDAL>();

    protected void Page_Load(object sender, EventArgs e)
    {
        verificaAcesso();
        exibeMensagemConfirmacao("");
        if (!IsPostBack)
        {
            carregaGrid(0);
            carregaCategoria();
            Panel2.Visible = false;
        }
    }
    public void carregaGrid(int n)
    {
        lst = ProdutoDAL.SelecionarTodos("");
        gvProduto.DataSource = lst;
        gvProduto.PageIndex = n;
        gvProduto.DataBind();
    }
    public void carregaCategoria()
    {
        lCat = CategoriaDAL.SelecionarTodos("");
        gvCategoria.DataSource = lCat;
        gvCategoria.DataBind();

    }
    protected void gvProduto_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        carregaGrid(e.NewPageIndex);
    }

    protected void gvProduto_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        Int32 idConversao = Convert.ToInt32(e.CommandArgument.ToString());
        if (e.CommandName == "Alterar")
        {
            carregaCampos(idConversao);
        }
        else if (e.CommandName == "Remover")
        {
            //if (Util.MSGBox.Descricao("Tem certeza?") == "Yes")
            //{
            obj.Delete(idConversao);
            carregaGrid(gvProduto.PageIndex);
            //}
        }
    }

    private void carregaCampos(int id)
    {
        Panel1.Visible = false;
        Panel2.Visible = true;
        if (id != 0)
        {
            obj.SelecionarPorID(id);
            txtIdProduto.Text            = obj.idProduto.ToString();
            txtNomeProduto.Text          = obj.NomeProduto.ToString();
            txtCodigoProduto.Text        = obj.CodigoProduto.ToString();
            txtDescricao.Text            = convertTextBox (obj.Descricao.ToString() );
            txtDensidadeCalorica.Text    = convertTextBox (obj.DensidadeCalorica.ToString() );
            txtDistribuicaoCalorica.Text = convertTextBox (obj.DistribuicaoCalorica.ToString() );
            txtFonteProteina.Text        = convertTextBox (obj.FonteProteina.ToString() );
            txtFonteCarboidrato.Text     = convertTextBox (obj.FonteCarboidrato.ToString() );
            txtFonteFibra.Text           = convertTextBox (obj.FonteFibra.ToString() );
            txtFonteLipideo.Text         = convertTextBox (obj.FonteLipideo.ToString() );
            txtPerfilLipidico.Text       = convertTextBox(obj.PerfilLipidico.ToString());
            txtProteina.Text             = obj.Proteina.ToString();
            txtCarboidrato.Text          = obj.Carboidrato.ToString();
            txtLipideo.Text              = obj.Lipideo.ToString();
            txtProporcaoCaloria.Text     = obj.ProporcaoCaloria.ToString();
            txtNutriCond.Text            = obj.NutriCond.ToString();
            txtOsmolaridadeAgua.Text     = obj.OsmolaridadeAgua.ToString();
            txtOsmolaridade.Text         = obj.Osmolaridade.ToString();
            txtApresentacao.Text         = obj.Apresentacao.ToString();
            txtSabor.Text                = obj.Sabor.ToString();
            txtVolumeMedio.Text          = obj.VolumeMedio.ToString();

            ddlestiloCSS.SelectedIndex = ddlestiloCSS.Items.IndexOf(ddlestiloCSS.Items.FindByValue(obj.estiloCSS.ToString()));
            ddlAtivo.SelectedIndex = ddlAtivo.Items.IndexOf(ddlAtivo.Items.FindByValue(obj.Ativo.ToString()));

            imagemTitulo.ImageUrl = "../images/Produto/titulo/titulo-" + formataTituloProduto ( obj.NomeProduto.ToString())  +".png";
            imagemProduto.ImageUrl = "../images/Produto/imagem-" + formataTituloProduto ( obj.NomeProduto.ToString() ) +".png";
                  
        	
            
            carregaProdutoCategoria(id);

        }
        else
        {
            txtNomeProduto.Text = txtBusca.Text;
            txtIdProduto.Text = "";
            txtCodigoProduto.Text = "";
            txtDescricao.Text = "";
            txtDensidadeCalorica.Text = "";
            txtDistribuicaoCalorica.Text = "";
            txtFonteProteina.Text = "";
            txtFonteCarboidrato.Text = "";
            txtFonteFibra.Text = "";
            txtFonteLipideo.Text = "";
            txtPerfilLipidico.Text = "";
            txtProteina.Text = "";
            txtCarboidrato.Text = "";
            txtLipideo.Text = "";
            txtProporcaoCaloria.Text = "";
            txtNutriCond.Text = "";
            txtOsmolaridadeAgua.Text = "";
            txtOsmolaridade.Text = "";
            txtApresentacao.Text = "";
            txtSabor.Text = "";
            txtVolumeMedio.Text = "";

            lblImagem.Visible = false;
        }
    } // carregaCampos
    public void gravaCampos(Int32 id)
    {
        ProdutoDAL oObj = new ProdutoDAL();
        

        //oConv.idProduto = id;
        oObj.NomeProduto            = txtNomeProduto.Text;
        oObj.CodigoProduto          = txtCodigoProduto.Text;
        oObj.Descricao              = convertHTML ( txtDescricao.Text );
        oObj.DensidadeCalorica      = convertHTML ( txtDensidadeCalorica.Text );
        oObj.DistribuicaoCalorica   = convertHTML ( txtDistribuicaoCalorica.Text );
        oObj.FonteProteina          = convertHTML ( txtFonteProteina.Text );
        oObj.FonteCarboidrato       = convertHTML ( txtFonteCarboidrato.Text );
        oObj.FonteFibra             = convertHTML ( txtFonteFibra.Text );
        oObj.FonteLipideo           = convertHTML ( txtFonteLipideo.Text );
        oObj.PerfilLipidico         = convertHTML(txtPerfilLipidico.Text);
        oObj.Proteina               = txtProteina.Text;
        oObj.Carboidrato            = txtCarboidrato.Text;
        oObj.Lipideo                = txtLipideo.Text;
        oObj.ProporcaoCaloria       = txtProporcaoCaloria.Text;
        oObj.NutriCond              = txtNutriCond.Text;
        oObj.OsmolaridadeAgua       = txtOsmolaridadeAgua.Text;
        oObj.Osmolaridade           = txtOsmolaridade.Text;
        oObj.Apresentacao           = txtApresentacao.Text;
        oObj.Sabor                  = txtSabor.Text;
        oObj.VolumeMedio            = txtVolumeMedio.Text;
        oObj.estiloCSS              = ddlestiloCSS.SelectedValue;

        oObj.Ativo = ddlAtivo.SelectedValue;
        oObj.idUpdate = 1;
        oObj.idCadastro = 1;
        oObj.DataUpdate = DateTime.Now.ToString("yyyy-MM-dd h:mm:ss");
        if (id == 0)
        {
            oObj.Insert();
            txtIdProduto.Text = oObj.idProduto.ToString();
        }
        else
        {
            oObj.Update(id);
        }

        /*++++++++++++++++ GRAVANDO CATEGORIA +++++++++++++++++++++++*/

        foreach (GridViewRow item in gvCategoria.Rows) {
            Label lblidCategoria = (Label)item.FindControl("lblidCategoria");
            CheckBox chkCategoria = (CheckBox)item.FindControl("chkCategoria");
            if (chkCategoria.Checked) {
                oProdutoCategoria.lCategoria.Add(Convert.ToInt32(lblidCategoria.Text));
            }
        }

        oProdutoCategoria.idProduto = Convert.ToInt32(txtIdProduto.Text);
        oProdutoCategoria.incluir();
        exibeMensagemConfirmacao(oObj.msgRetorno);

    } // gravaCampos
    protected void btnBusca_Click(object sender, ImageClickEventArgs e)
    {
        if (txtBusca.Text != "")
        {
            lst = ProdutoDAL.SelecionarTodos(txtBusca.Text);
            gvProduto.DataSource = lst;
            gvProduto.DataBind();
        }
        else
        {
            exibeMensagemConfirmacao("Por Favor, preencha o campo!");
        }
    }
    protected void btnSalvar_Click(object sender, ImageClickEventArgs e)
    {
        if (txtIdProduto.Text == "")
        {
            gravaCampos(0);
        }
        else
        {
            gravaCampos(Convert.ToInt32(txtIdProduto.Text));
        }
    }
    protected void btnCancelar_Click(object sender, ImageClickEventArgs e)
    {
        Response.Redirect("Produto.aspx");

    }

    public void exibeMensagemConfirmacao(string msg)
    {
        if (msg.Equals(""))
        {
            lblMensagem.Text = msg;
            lblMensagem.Visible = false;
        }
        else
        {
            lblMensagem.Text = msg;
            lblMensagem.Visible = true;
        }
    }
    protected void btnAdicionar_Click(object sender, ImageClickEventArgs e)
    {
        carregaCampos(0);
    }
    protected void carregaProdutoCategoria(int id)
    {
        oProdutoCategoria.idProduto = id;
        lProdutoCategoria = oProdutoCategoria.selecionaPorId();
        if (lProdutoCategoria.Count() != 0) {
            foreach (var rs in lProdutoCategoria) {
                foreach(GridViewRow gvItem in gvCategoria.Rows){
                    Label lblidCategoria = (Label)gvItem.FindControl("lblidCategoria");
                    CheckBox chkCategoria = (CheckBox)gvItem.FindControl("chkCategoria");
                    if (rs.idCategoria == Convert.ToInt32( lblidCategoria.Text )) {
                        chkCategoria.Checked = true;
                    }
                }
            }
        }

    }
    public string convertHTML(string html)
    {

        return html.Replace(Environment.NewLine, "<br/>");
    }
    public string convertTextBox(string html)
    {

        return html.Replace("<br/>", Environment.NewLine);
    }
    public static string formataTituloProduto(string nm)
    {
        return nm.Replace(" ", "");
    }
    public void verificaAcesso()
    {
        if (Session["Logado"] != "Painel")
        {
            Response.Redirect("Login.aspx");
            Session.RemoveAll();
        }
    }
}